<?php

/**
 * Description of RepoTipoDocumento
 *
 * @author  Mariano Renkine
 * @author  Fernando Arau
 */
class RepoTipoDocumento extends Repositorio
{

  function __construct()
  {
    $this->tabla = "tipo_documento";
    $this->id = "idTipoDocumento";
  }

  function agregar(TipoDocumento $tipoDocumento)
  {
    try
    {

      $link = $this->OpenDB();
      $this->beginTransaction();
      $query = "INSERT INTO " . $this->tabla . "(nombre, usuario, deshabilitado) values (";
      $query .= "'" . $tipoDocumento->getNombre() . "', ";
      $query .= "'" . $tipoDocumento->getUsuario() . "', ";
      $query .= $tipoDocumento->getDeshabilitado() . ")";
      $result = $this->PostSQL($query);
      $this->commitTransaction();
      $this->CloseDB($link);
      return $result;
    } catch (Exception $ex)
    {
      return $ex;
    }
  }

  function modificar(TipoDocumento $tipoDocumento)
  {
    try
    {
      $link = $this->OpenDB();
      $this->beginTransaction();
      $query = "UPDATE " . $this->tabla . " SET ";
      $query .= "nombre = '" . $tipoDocumento->getNombre() . "', ";
      $query .= "usuario = '" . $tipoDocumento->getUsuario() . "', ";
      $query .= "deshabilitado = " . $tipoDocumento->getDeshabilitado() . ", ";
      $query .= "WHERE " . $this->id . " = " . $tipoDocumento->getId();
      $result = $this->PostSQL($query);
      $this->commitTransaction();
      $this->CloseDB($link);
      return $result;
    } catch (Exception $ex)
    {
      return $ex;
    }
  }

    function buscar($id)
  {
    $link = $this->OpenDB();
    $queryTxt = "SELECT  nombre, deshabilitado, usuario, CONVERT(BIGINT,version) AS version
      FROM " . $this->tabla . " WHERE " . $this->id . " = " . $id;
    $query = $this->GetSQL($queryTxt);
    $this->CloseDB($link);
    $tipoDocumento = new TipoDocumento();
    $tipoDocumento->setNombre($query[0]->nombre);
    $tipoDocumento->setVersion($query[0]->version);
    $tipoDocumento->setDeshabilitado($query[0]->deshabilitado);
    $tipoDocumento->setUsuario($query[0]->usuario);
    $tipoDocumento->setId($id);
    return $tipoDocumento;
  }

  
  function obtenerListadoCache()
  {
    $link = $this->OpenDB();
    $query = "SELECT idTipoDocumento, nombre FROM tipo_documento WHERE deshabilitado = 0";
    $tiposDocumento = $this->GetSQL($query);
    $cache = array();
    if (is_array($tiposDocumento))
    {
      foreach ($tiposDocumento as $tiposDocumento)
      {
        $cache[$tiposDocumento->idTipoDocumento] = $tiposDocumento->nombre;
      }
    }
    $this->CloseDB($link);
    return $cache;
  }

}

?>
